package so.sao.shop.supplier.dao.app;


import org.apache.ibatis.annotations.Param;
import org.springframework.stereotype.Repository;
import so.sao.shop.supplier.domain.AppAddress;
import so.sao.shop.supplier.domain.DeliveryAddress;

import java.util.List;

/**
 * <p>
  *  Mapper 接口
 * </p>
 *
 * @author zhangruibing
 * @since 2017-07-17
 */
@Repository

public interface AppDeliveryAddressDao {

    /**
     * <p>新增收货地址</p>
     * @param deliveryAddress
     */
    boolean save(DeliveryAddress deliveryAddress);

    /**
     * <p>编辑收货地址</p>
     *
     * @param deliveryAddress
     * @return
     */
    boolean update(DeliveryAddress deliveryAddress);

    /**
     * 批量删除收货地址
     * @param addrIds
     * @return
     */
    boolean deleteByAddrIds(@Param("addrIds") List<Long> addrIds);

    /**
     * <p>根据用户id查询收货地址</p>
     * @param userId 用户ID
     * @return
     */
    List<DeliveryAddress> findByUserId(@Param("userId") Long userId);

    /**
     * 收货地址默认状态归零
     * @param userId 用户ID
     * @return
     */
    boolean  updateDeliveryAddressStatus(@Param("userId") Long userId);

    /**
     * 设置默认收货地址
     * @param id 收货地址ID
     * @return
     */
    boolean updateDeliveryAddressStatusByid(@Param("id") Long id);

    /**
     * 根据用户ID查询默认收货地址
     * @param userId 用户ID
     * @return
     */
    DeliveryAddress findDefaultDeliveryAddrByUserId(@Param("userId") Long userId);

    /**
     * 根据区级编码查询省市区编码串
     * @param areaCode 区级编码
     * @return
     */
    String findCodeStringByAreaCode(@Param("areaCode")String areaCode);

    /**
     * 根据用户ID统计该用户地址数
     * @param userId
     * @return
     */
    int countAddrNum(@Param("userId") Long userId);

    /**
     * 获取所有地址信息
     * @return
     */
    List<AppAddress> findAllAddress();

}